From: Georges Basile Stavracas Neto Date: Tue, 1 Sep 2020 18:41:44 +0000 (-0300) Subject: appDisplay: Only emit layout-changed when not updating pages X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~672^2^2~12 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=95645e155e961c92552dbf8f8578f46746fcf282;p=gnome-shell.git appDisplay: Only emit layout-changed when not updating pages It is wasteful to emit layout-changed when updating pages, because the caller (AppDisplay) already has an updated state by the time this is called. Only emit 'layout-changed' if the GSettings notification doesn't come from AppDisplay updating the pages. https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1428 --- diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js index d26c12fec..98ac9e68b 100644 --- a/js/ui/appDisplay.js +++ b/js/ui/appDisplay.js @@ -832,13 +832,15 @@ var PageManager = GObject.registerClass({ global.settings.connect('changed::app-picker-layout', this._loadPages.bind(this)); + this._updatingPages = false; this._loadPages(); } _loadPages() { const layout = global.settings.get_value('app-picker-layout'); this._pages = layout.recursiveUnpack(); - this.emit('layout-changed'); + if (!this._updatingPages) + this.emit('layout-changed'); } getAppPosition(appId) { @@ -869,8 +871,12 @@ var PageManager = GObject.registerClass({ packedPages.push(pageData); } + this._updatingPages = true; + const variant = new GLib.Variant('aa{sv}', packedPages); global.settings.set_value('app-picker-layout', variant); + + this._updatingPages = false; } get pages() {